package com.theaf.basemodule.service.impl.core;

import com.alibaba.dubbo.config.annotation.Service;
import com.theaf.basemodule.common.api.ParameterService;
import com.theaf.basemodule.common.vo.ParameterVO;
import com.theaf.basemodule.service.impl.ParameterServiceImpl;
import com.theaf.core.api.ParaComService;
import com.theaf.core.cache.CachesHelper;

import javax.annotation.Resource;

/**
 * @Author:songwenke
 * @Description:参数外部服务
 * @Date:create in 11:02 2018/3/6
 * @Modified By:
 **/
@Service
public class ParaServiceDubboImpl implements ParaComService {
    @Resource
    private ParameterService parameterService;

    private ParameterVO findByKey(String key){
        ParameterVO parameter = (ParameterVO) CachesHelper.get(ParameterServiceImpl.CACHE_NAME+key);
        if(parameter==null){
            synchronized (this) {
                parameter = (ParameterVO) CachesHelper.get(ParameterServiceImpl.CACHE_NAME+key);
                if(parameter==null) {
                    ParameterVO parameterVO = parameterService.findByCode(key);
                    CachesHelper.set(ParameterServiceImpl.CACHE_NAME+key, parameterVO, null);
                }
            }
        }
        return parameter;
    }
    @Override
    public String findNameByKey(String key) {
        ParameterVO parameterVO = findByKey(key);
        if(parameterVO!=null) {
            return parameterVO.getName();
        }
        return null;
    }

    @Override
    public String findMemoByKey(String key) {
        ParameterVO parameterVO = findByKey(key);
        if (parameterVO != null) {
            return parameterVO.getRemark();
        }
        return null;
    }
}
